// 如果new运算符是一个方法而不是一个运算符，它可能会像这样执行
Function.method("new", function() {
    // 创建一个新对象，它继承自构造器函数的原型对象。
    var that = Object.create(this.prototype);

    // 调用构造函数，绑定this到新对象上。
    var other = this.apply(that, arguments);

    //如果它返回值不是对象，就返回该新对象
    return (typeof other === "object" && other) || that;
});



var Mammal = function(name) {
    this.name = name;
}
Mammal.prototype.get_name = function() {
    return this.name;
}
Mammal.prototype.says = function() {
    return this.sayIng || '';
}

//现在，我们可以构造一个实例
var myMammal = new Mammal("Herb the Mammal");

//构造另一个伪类来继承Mammal
var Cat = function(name) {
    this.name = name;
    this.saying = "meow";
}

Cat.prototype = new Mammal();